#ifndef CARTE_H_INCLUDED
#define CARTE_H_INCLUDED
#include <stdlib.h>
#include <stdio.h>
#include "CaseTerrain.h"
#include "Dimension.h"

/**
@brief Module Carte:<br>
Header contenant toutes les variables et fonctions relatives a une Carte
@author Dahan Geslain , Damien Chay
@file Carte.h
@version 1.0
@date 23/10/2012
*/

/**
\struct Carte
\brief Module de carte
*/

struct Carte
{
    CaseTerrain **Cases; /**< @brief Tableau 2D de type CaseTerrain representant la carte*/
    Dimension Dim;/**< @brief Dimension x,y de la carte*/
};

void setDim(Carte *Map, int x, int y);/**< @brief Mutateur*/

CaseTerrain* getCase(const Carte *Map , int x , int y);/**< @brief Accesseur*/
const Dimension* getDim(const Carte *Map);/**< @brief Accesseur*/

/**
@brief Initialisation des dimension de la carte
@param [in,out] Map
@param [in] dimx
@param [in] dimy
@return none
*/
void InitMap(Carte *Map, int dimx , int dimy);

/**
@brief Initialisation d'une case
@param [in,out] Map
@param [in] x indice x de la case
@param [in] y indice y de la case
@param [in] NTerrain
@param [in] NCollision
@return none
*/
void InitCaseMapTerrain(Carte *Map, int x , int y , unsigned int NTerrain, bool NCollision );

/**
@brief Initialisation d'une case
@param [in,out] Map
@param [in] x indice x de la case
@param [in] y indice y de la case
@param [in] NDecor
@param [in] NCollision
@return none
*/
void InitCaseMapDecor(Carte *Map, int x , int y ,unsigned int NDecor ,bool NCollision);

/**
@brief Affichage en console de la carte
@param [in] Map
@return none
*/

void AffichageCarte(const Carte* Map);

/**
@brief Libère le tableau de Case
@param [in,out] Map
@return none
*/

void TestamentCarte(Carte* Map);

#endif // CARTE_H_INCLUDED
